<?php
class AdminFaqController  extends Zone_Action{
	public function fields($default=NULL){
		$data = array(
			title 	=> array(
				type 		=> 'CHAR',
				form_label  => 'Tiêu đề',			
				no_empty	=> true
			),
			is_menu 	=> array(
				type 		  => 'ENUM',
				form_label    => 'Hiện ở menu',
				value 		  => array('yes','no'),
				default_value	=> 'no'
			),
			ord 	=> array(
				type 		  => 'INT',
				form_label    => 'Thứ tự',
				default_value => 1
			),
			parent_id 	=> array(
				type 		=> 'INT',
				form_label  => 'Mục lớn',
			),
			content	=>array(
				type		=> 'HTML',
				form_label	=> 'Trả lời'
			)
		);
		if( is_array( $default ) ){
			foreach( $data as $k => $config ){
				if( $config['type'] != 'NONE' && isset( $default[$k] ) ){
					$data[$k]['default_value'] = $default[$k];
				}
			}
		}	
		return $data;	
	}
	
	public function indexAction(){			
		$posts = $this
			->Model
			->fetchAll("SELECT `a`.* FROM `faqs` as `a` ORDER BY `ord`");
		
		$this->set('posts',$posts);	
	}
	
	public function addAction(){
		$posts = $this
			->Model
			->fetchAll("SELECT * FROM `faqs` WHERE `is_menu`='yes' ORDER BY `ord`");
		$this->set('posts',$posts);	
		
		if(isPost()){
			loadClass("ZData");
			$form = new ZData();
			$form->addFields( $this->fields());
			$data = $form->getData();
			
			if( !is_array($data) ){
				return $this->setJSON(array(
					message => error($data)
				));
			}			

			$this->Model->insert('faqs',$data);
			
			return $this->setJSON(array(
				redirect => '#Admin/Faq'
			));
		}
	}
	
	public function editAction(){
		$posts = $this
			->Model
			->fetchAll("SELECT * FROM `faqs` WHERE `is_menu`='yes' ORDER BY `ord`");
		$this->set('posts',$posts);	
		
		$post_id = getInt('ID',0);		
		$post = $this->Model->fetchRow("SELECT * FROM `faqs` WHERE `ID`='$post_id'");
		
		if( !$post ){
			return $this->setJSON(array(
				content => error('Câu hỏi đã bị xóa hoặc không tôn tại')
			));		
		}

		$this->set('post',$post);		
		
		if(isPost()){
			loadClass("ZData");
			$form = new ZData();
			$form->addFields( $this->fields($post));
			$data = $form->getData();
				
			$parent_id = get('parent_id');	
			//if( $this->Model->fetchRow("SELECT * FROM `faqs` 
			//	WHERE `ID`='$parent_id' AND `ID`<>'$post_id'") ){
			//	return $this->setJSON(array(
			//		message => error('Phòng ban trực thuộc không hợp lệ')
			//	));
			//}
			
			if( !is_array($data)){
				return $this->setJSON(array(
					message => error($data)
				));
			}		
						
			$this->Model->update('faqs',$data,"`ID`='$post_id'");
			return $this->setJSON(array(
				redirect	=> '#Admin/Faq/'
			));
		}
	}
	

	public function deleteAction(){
		$post_id = getInt('ID',0);	
		$post = $this->Model->fetchRow("SELECT * FROM `faqs` WHERE `ID`='$post_id'");
		if( !$post ){
			return $this->setJSON(array(
				alert => 'Câu hỏi đã bị xóa hoặc không tồn tại'
			));		
		}	
		
		$this->Model->update('faqs', 
			array(
				parent_id => $post['parent_id'] 
		),"`parent_id`='$post_id'");
		
		$this->Model->delete('faqs'," `ID`='$post_id' ");		
		return $this->setJSON(array(
			redirect	=> '#Admin/Faq'
		));
	}
}
?>